# -*- coding: utf-8 -*-
# time: 2025/4/9 10:31
# file: ch01.py
# author: hanson
"""
https://www.langchain.com.cn/docs/introduction/
https://www.langchain.com.cn/docs/tutorials/llm_chain/
ChatPromptTemplate
适用场景
对话式模型：专为聊天模型（如 ChatGPT、Qwen 等）设计
多角色消息：需要区分系统指令、用户输入、AI 回复的场景
复杂对话：需要动态插入对话历史的场景
"""
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

# 创建 prompt（包含系统指令和动态历史） 这个是 langchain 0.2 的新特性
prompt = ChatPromptTemplate.from_messages([
    SystemMessage(content="你是一个专业翻译助手，当前时间：{time}"),
    MessagesPlaceholder(variable_name="chat_history"),  # 动态注入历史
    HumanMessage(content="翻译这句话：{input}")
])
formatted_message = prompt.format_messages(
    time="2025年4月9日",
    input="你好，世界！",
    chat_history=[
        HumanMessage(content="你好！"),
        SystemMessage(content="你好，我是助手！")
    ]
)
#
print(formatted_message)
# 使用 invoke 方法 langchain 0.3 的新特性 from_messages 改为 invoke

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业翻译助手，当前时间：{time}"),
    MessagesPlaceholder(variable_name="chat_history"),  # 动态注入历史
    ("human", "翻译这句话：{input}")
])
prompt_value = prompt.invoke({
    "time": "2025年4月9日",
    "input": "你好，世界！",
    "chat_history": [
        HumanMessage(content="你好！"),
        HumanMessage(content="你好，我是助手！")  # 注意这里应该是AI的回复
    ]
})

print(prompt_value.to_messages())